import plugin from '../../lib/plugins/plugin.js'
import fetch from 'node-fetch'
import { segment } from 'oicq'
import yaml from "yaml"
import fs from 'node:fs'


/**
 * 当初甚至不知道椰奶也有这功能，而且做的很完善，现在显得这插件很fw...
 * 
 * 完整链接代理 （这可以直接填入到下方常量agent中）
 * i.acgmx.com
 * i.pixiv.re
 * 
 * 仅用pid代理（没做pid代理，暂时只是放个链接）
 * https://pixiv.re/92967972.jpg
 * https://px3.rainchan.win/img/original/92967972
 */

const nsfwtag = ["尻", "屁股", "R-18", "尻神様", "真空"];//屏蔽tag，带有屏蔽词tag的图将不发送图片，改发链接
const agent = 'i.acgmx.com'; //代理地址

export class calc extends plugin {

    constructor() {
        super({
            /** 功能名称 */
            name: 'p站搜图',
            /** 功能描述 */
            dsc: '基本功能',
            /** https://oicqjs.github.io/oicq/#events */
            event: 'message',
            /** 优先级，数字越小等级越高 */
            priority: 2000,
            rule: [
                {
                    /** 命令正则匹配 */
                    reg: '^随机一言$',
                    /** 执行方法 */
                    fnc: 'random',
                },
                {
                    /** 命令正则匹配 */
                    reg: '^(id|ID)(:|：)?([0-9]+)$',
                    /** 执行方法 */
                    fnc: 'pximg',
                },
                {
                    /** 命令正则匹配 */
                    reg: '^lo',
                    /** 执行方法 */
                    fnc: 'loli',
                },
            ]
        })
    }

    /**
     * 
     * @param e oicq传递的事件参数e
     * ${e.at}:被艾特人的qq号
     * ${e.user_id}:发言者qq号
     * ${e.nickname}:发言人昵称
     * ${e.group_name}:群名
     * e.reply('这是一条回复消息',true)//发送回复消息
     * e.msg 触发指令的内容
     * Bot.uin 机器人账号
     * Bot.nickname 机器人昵称
     */

    async random(e) {
        let url = 'https://ovooa.com/API/yiyan/api.php';
        let response = await fetch(url); //调用接口获取数据
        let res = await response.text();

        await this.e.reply(res);//发送消息
        return true; //返回true 阻挡消息不再往下
    }

    async pximg(e) {
        let emsg = e.msg.replace(/id(:|：)?/i, '');//获取发言内容
        let url = 'https://px3.rainchan.win/json/'+emsg;
        let response = await fetch(url).catch((err) => logger.error(err)); //调用接口获取数据
        let obj = await response.json();

        //获取链接
        if (obj.error == 'true'){
            e.reply(`你确定这id没错吗`,true)
            return true;
        } else {
            //获取图片链接
            if (obj.body.pageCount == '1') {
                var eurl = `https://pixiv.re/${emsg}.jpg`;
            } else {
                var eurl = `https://pixiv.re/${emsg}.jpg`;
            }
            e.reply([
                `标题:${obj.body.title}\n`,
                `id:${obj.body.id}\n`,
                `作者名:${obj.body.userName}\n`,
                `作者id:${obj.body.userId}\n`,
                `链接:`+eurl,
                ])
            return true;
        }
    }

    async loli(e) {
        try {
            var emsg = e.msg.match(/lo(li)?([^0-9]*)(\d+)?/)[2];
            console.log('tag:'+emsg)
        } catch {
            var emsg;
        }
        let num = e.msg.match(/\d+/);
        let url = 'https://api.lolicon.app/setu/v2?'
        if (emsg)url = url+'tag='+emsg;
        if (num)url = url+'&num='+num[0];
        let response = await fetch(url).catch((err) => logger.error(err)); //调用接口获取数据
        let obj = await response.json();
        let img;
        let tags = '';
        let data_msg = [];
        if(obj.error){e.reply('接口出错啦'); return true;}
        if(obj.data.length > 1){
            for(let i in obj.data){
                let r18 = false;
                obj.data[i].tags.forEach(element => {
                    if(nsfwtag.includes(element)){
                        r18 = true;
                    }
                });
                if(r18){
                    img = `链接：${obj.data[i].urls.original}`;
                }else{
                    img = segment.image(obj.data[i].urls.original);
                }
                let msg = [
                    `标题:${obj.data[i].title}\n`,
                    `id:${obj.data[i].pid}\n`,
                    `作者名:${obj.data[i].author}\n`,
                    `作者id:${obj.data[i].uid}\n`,
                    img
                ];
                data_msg.push({
                    message: msg,
                    nickname: e.nickname,
                    user_id: e.user_id
                })
                console.log(obj.data[i].urls.original)
            }
            //制作合并转发
            var fason;
            if (this.e.isGroup) {
                fason = await e.group.makeForwardMsg(data_msg);  
            } else {
                fason = await e.friend.makeForwardMsg(data_msg); 
            }
        }else{
            if(obj.data[0].r18 || obj.data[0].tags[0] == 'R-18'){
                for(let i in obj.data[0].tags){
                    tags += obj.data[0].tags[i]+';';
                }
                img = `链接：${obj.data[0].urls.original}\n标签：${tags}`;
            }else{
                img = segment.image(obj.data[0].urls.original);
            }
            var fason = [
                `标题:${obj.data[0].title}\n`,
                `id:${obj.data[0].pid}\n`,
                `作者名:${obj.data[0].author}\n`,
                `作者id:${obj.data[0].uid}\n`,
                img
            ]
        }
        e.reply(fason);
    }
}